<?

/**********************************************************************
 *                                                                    *    
 * Copyright (c) 2009 Dmytro Bezhnar. All rights reserved.     			  *
 *                                                                    *
 **********************************************************************/

/**
 * ���������� ��� ����� ��� ������������� ajax
 *
 * @version $Id: Controller_ajax.php,v 1.9 2007/11/26 13:46:25 master Exp $
 */

class Controller_ajax extends Controller
{
	 /**
     * Database connection
     * @var �onnection
     */
    private $connection = null;	
	 
    public $cache_execute = false;

	/**
	 * �������� ����� ���������� ������� �������, ������� ����������� ������ ����� ������������� ��������
	 *
	 */
	
	function handleRequest()
    {
    	 global $options;
    	 $this->options['multilanguage']=$options['core']['multilanguage'];
    	 $this->options['multitemplates']=$options['core']['multitemplates'];
    	 $this->options['foldertemplates']=$options['core']['foldertemplates'];
    	 $this->options['ip_chack']=$options['core']['ip_chack'];
    	 $this->options['auth']=$options['core']['auth'];
    	 if ($options['core']['template_dir_default']!='')
    	 {
    	 	$this->template_dir_default = $options['core']['template_dir_default'];
    	 }
    	 
    	 
    	 # fix DataBase Charset
    	 $this->fixDBCharset();
    	 
    	 $this->setup_remote_addr();
    	
    	 $arr=array_merge($_GET,$_POST);
    	 $this->param_str=array_merge($this->param_str,array('target','event','lang_code'));
    	 foreach ($arr as $key=>$item)
    	 {
    	 	if ($this->check_params && (array_search($key,$this->check_not_array)===false)) {
	    	 	if (gettype($item)=='array')
	    	 	{
	    	 		if (array_search($key,$this->param_str)===false)
	    	 		{
	    	 			$this->checkArray($item,'int');
	    	 		}else{
	    	 			$this->checkArray($item,'str');
	    	 		}
	    	 	}else{
	    	 		if (array_search($key,$this->param_str)===false)
	    	 		{
		    	 		$item*=1;
	    	 		}else{
	    	 			$item=$this->checkTextForMysql($item);
	    	 		}
	    	 	}
    	 	}
    	 	#$this->param[$key]=$item;
    	 	$this->$key=$item;
    	 }
    	 

    	if ($this->cache_execute) {
			$cache = new CacheAjax();
			$cache->init(&$this);
		}        
    	 
    	 // if required, check for the logged user and redirect to login page
        if ($this->isSecure() && !$this->isLogged()) {
//----------------------------------------------------------------------------------------------------------------------
        }else{
		  $this->prepare();
        }
        
    }

    /**
     * ���������� true ���� ������������ �����������, � � �������� ������ false
     *
     * @return unknown
     */
	
  	function isLogged()
	{
		return $_SESSION['person_id'];
	}
  
    /**
     * ��������� ���� � ajax ���������
     *
     * @param string $name �������� ����
     * @param string $value �������� ����
     * @param string $atr_name �������� �������� ����
     * @param string $atr_value �������� ��������
     */
	
    function setAjaxData($name,$value, $atr_name='', $atr_value='')
    {
    	$add_result_node =& $this->ajax->add_node($name);
    	$add_result_node->set_data($value);
    	if ($atr_name!='')
    	{
    		$add_result_node->set_attribute($atr_name,$atr_value);
    	}
    }
    
     /**
     * ��������� ���� � ajax ���������
     *
     * @param string $name �������� ����
     * @param string $value �������� ����
     * @param string $atr_name �������� �������� ����
     * @param string $atr_value �������� ��������
     */
	
    function setAjaxDataArr($name,$value, $arr)
    {
    	$add_result_node =& $this->ajax->add_node($name);
    	$add_result_node->set_data($value);
    	foreach ($arr as $key=>$item)
    	{
	    	if ($key!='')
	    	{
	    		$add_result_node->set_attribute($key,$item);
	    	}
    	}
    }
    

    /**
     * �������� ����������� � ajax
     *
     * @param string $name
     */
    
    function registerAjax($name)
    {
    	$this->ajax->register(array(&$this, $name));
    }
    
    /**
     * ���������� ��������� �� UTF-8,
     * � Ajax ��� ������������ �� default-�
     *
     */
    function fixDBCharset() {
    	global $options;
    	$options['locale']['db_charset'] = 'utf8';
    }
    
    /**
     * Возвращает название деректории для системы темплейтов при включоном foldertemplates
     * 
     * @return string
     */
    protected function getFolderTemplates()
    {
    	if ($this->options['foldertemplates'])
    	{
    		return 'ajax/';
    	}
    	return '';
    }
    
}
?>